﻿Imports Negocio
Public Class frmImpresionBultos

    Dim servicio As New DocumentoClienteBultoNegocio
    Dim servicio1 As New DocumentoAlmacenDetallePickeadorUbicacionBandejaNegocio

    Sub limpiar()
        txtPedido.Text = ""
        txtPedido.Focus()
    End Sub

    Sub mostraMensaje(ByVal men As String)
        MsgBox(men, MsgBoxStyle.Information, "Mensajes al Usuario")
    End Sub

    Sub imprimir(datoRuta As String, datoMarca As String, datoBarra As String, nroPedido As String, _
                 datoDistrito As String, datoAgencia As String, datoPeso As String, datoCliente As String, datoDireccion As String, _
                 total As Integer, codBulto As String, numero As Integer, datoLargo As Integer)
        Dim impresion As New crBulto
        impresion.SetParameterValue(0, datoRuta)
        impresion.SetParameterValue(1, datoMarca)
        impresion.SetParameterValue(2, datoBarra & codBulto & "*")
        impresion.SetParameterValue(3, nroPedido & " - " & numero & "/" & total)
        impresion.SetParameterValue(4, datoDistrito)
        impresion.SetParameterValue(5, datoAgencia)
        impresion.SetParameterValue(6, datoPeso)
        impresion.SetParameterValue(7, datoCliente)
        impresion.SetParameterValue(8, datoDireccion)
        impresion.SetParameterValue(9, datoLargo)

        impresion.PrintToPrinter(1, False, 0, 0)
    End Sub

    Function obtenerTotal(ds As DataSet) As Integer
        Dim total As Integer = 0
        For i = 0 To ds.Tables(0).Rows.Count - 1
            total = total + ds.Tables(0).Rows(i)("DCB_Cantidad").ToString.Trim
        Next
        Return total
    End Function

    Sub mandarImprimir(ds As DataSet, tot As Integer, lar As Integer)
        Dim acumulador As Integer = 1
        For a = 0 To ds.Tables(0).Rows.Count - 1
            Dim cantidad As Integer = ds.Tables(0).Rows(a)("DCB_Cantidad").ToString.Trim
            For b = 0 To cantidad - 1
                imprimir(ds.Tables(0).Rows(a)("RUT_Descripcion").ToString.Trim, ds.Tables(0).Rows(a)("CLI_Marca").ToString.Trim, ds.Tables(0).Rows(a)("Barra").ToString.Trim, _
                         ds.Tables(0).Rows(a)("DCI_Codigo").ToString.Trim, ds.Tables(0).Rows(a)("Ubigeo").ToString.Trim, ds.Tables(0).Rows(a)("AGE_Descripcion").ToString.Trim, _
                         ds.Tables(0).Rows(a)("DCB_PesoBruto").ToString.Trim, ds.Tables(0).Rows(a)("CLI_Descripcion").ToString.Trim, ds.Tables(0).Rows(a)("CLEN_Direccion").ToString.Trim, _
                         tot, ds.Tables(0).Rows(a)("DCB_Codigo").ToString.Trim, acumulador, lar)

                acumulador = acumulador + 1
            Next
        Next
    End Sub

    Sub impresion()
        If txtPedido.Text = "" Then
            mostraMensaje("Ingrese el código del pedido.")
            limpiar()
        Else
            Dim ds As DataSet = servicio.obtenerImpresionBultos(txtPedido.Text.Trim, "P")
            Dim largo As Integer = servicio1.obtenerCantidadItemsLargos(txtPedido.Text.Trim, "P")
            If ds.Tables(0).Rows.Count = 0 Then
                mostraMensaje("Pedido no tiene bultos disponibles para imprimir.")
                limpiar()
            Else
                Dim tot As Integer = obtenerTotal(ds)
                lblCantidad.Text = "Cantidad de Impresiones : " & tot
                If MsgBox("¿Está seguro de imprimir todos los bultos?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton2, "Mensajes al Usuario") = MsgBoxResult.Yes Then
                    mandarImprimir(ds, tot, largo)
                    mostraMensaje("Impresión completa.")
                    lblCantidad.Text = ""
                    limpiar()
                Else
                    lblCantidad.Text = ""
                    limpiar()
                End If
            End If
        End If
    End Sub

    Private Sub btnImprimir_Click(sender As System.Object, e As System.EventArgs) Handles btnImprimir.Click
        impresion()
    End Sub

    Private Sub frmImpresionBultos_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        limpiar()
    End Sub

    Private Sub txtPedido_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtPedido.KeyPress
        If e.KeyChar = ChrW(Keys.Enter) Then
            impresion()
        End If
    End Sub

End Class